package com.example.ai.config;

import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.model.embedding.EmbeddingModel;
import dev.langchain4j.store.embedding.EmbeddingStore;
import dev.langchain4j.store.embedding.pinecone.PineconeEmbeddingStore;
import dev.langchain4j.store.embedding.pinecone.PineconeServerlessIndexConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


/**
 * 向量存储配置类
 * 配置Pinecone向量数据库连接和索引设置
 *
 * @author czwa
 */
@Configuration
public class EmbeddingStoreConfig {

    @Autowired
    private EmbeddingModel embeddingModel;

    /**
     * 配置Pinecone向量存储
     *
     * @return 向量存储实例
     */
    @Bean
    public EmbeddingStore<TextSegment> embeddingStore() {
        return PineconeEmbeddingStore.builder()
                // 从环境变量获取Pinecone API密钥，保障安全性
                .apiKey(System.getenv("PINECONE_API_KEY"))
                // 指定向量索引名称
                .index("wuai-index")
                // 指定命名空间，用于逻辑隔离
                .nameSpace("wuai-namespace")
                // 配置索引创建参数（如果索引不存在）
                .createIndex(PineconeServerlessIndexConfig.builder()
                        .cloud("AWS")               // 云服务提供商
                        .region("us-east-1")        // 区域
                        // 向量维度与嵌入模型保持一致
                        .dimension(embeddingModel.dimension())
                        .build())
                .build();
    }
}